//
//  TSCommonTool+Down.swift
//  Pods
//
//  Created by 100Years on 2025/3/17.
//

//public extension TSCommonTool {
//    
//    /// 下载并缓存文件，依据 URL 的后缀名动态设置文件名
//    /// - Parameters:
//    ///   - url: 文件的 URL 地址
//    ///   - completion: 完成回调，返回本地缓存路径或错误
//    public static func downloadAndCacheFile(from urlString: String, fileEx:String? = nil,missingEx:String? = nil, cacheDirectory:String = "cacheAll",completion: @escaping (String?, Error?) -> Void) {
//        
//        guard let url = URL(string: urlString) else{
//            completion(nil, NSError(domain: "url null", code: 0))
//            return
//        }
//        
//        
//        guard let cachedFileURL = checkURLString(
//            from: urlString,
//            fileEx: fileEx,
//            missingEx: missingEx,
//            cacheDirectory: cacheDirectory,
//            completion: completion
//        ) else {
//            return
//        }
//        
//        let fileManager = FileManager.default
//        //检查文件是否已存在于缓存中
//        if fileManager.fileExists(atPath: cachedFileURL.path) {
//            print("文件已存在于缓存中: \(cachedFileURL)")
//            completion(cachedFileURL.path, nil)
//            return
//        }
//        
//        // 下载文件
//        let task = URLSession.shared.downloadTask(with: url) { tempFileURL, response, error in
//            if let error = error {
//                DispatchQueue.main.async {
//                    completion(nil, error)
//                }
//                return
//            }
//            
//            guard let tempFileURL = tempFileURL else {
//                DispatchQueue.main.async {
//                    completion(nil, NSError(domain: "DownloadError", code: -1, userInfo: [NSLocalizedDescriptionKey: "临时文件路径不存在"]))
//                }
//                return
//            }
//            
//            do {
//                if fileManager.fileExists(atPath: cachedFileURL.path) {
//                    try fileManager.removeItem(atPath:cachedFileURL.path)
//                    dePrint("下载成功,移除已有的旧文件: \(cachedFileURL)")
//                }
//                try fileManager.moveItem(at: tempFileURL, to: cachedFileURL)
//                dePrint("文件下载并缓存成功: \(cachedFileURL)")
//                DispatchQueue.main.async {
//                    completion(cachedFileURL.path, nil)
//                }
//            } catch {
//                dePrint("文件下载成功,但失败:\(error)")
//                DispatchQueue.main.async {
//                    completion(nil, error)
//                }
//            }
//        }
//        
//        task.resume()
//    }
//    
//    
//    //检查 url 对不对
//    public static func checkURLString(
//        from urlString: String,
//        fileEx:String? = nil,
//    missingEx:String? = nil,
//        cacheDirectory:String = "cacheAll",
//        completion:((String?, Error?) -> Void)? = nil
//    )->URL?
//    {
//        guard let url = URL(string: urlString) else{
//            completion?(nil, NSError(domain: "url null", code: 0))
//            return nil
//        }
//        
//        
//        if !urlString.contains("http") && urlString.contains("/"){
//            completion?(urlString.fillCachePath, nil)
//            return nil
//        }
//        
//        let fileManager = FileManager.default
//        
//        // 获取缓存目录下的 `cacheAll` 文件夹路径
//        let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!
//        let cacheVideoDirectory = cachesDirectory.appendingPathComponent(cacheDirectory)
//        
//        // 创建 `cacheAll` 文件夹（如果不存在）
//        if !fileManager.fileExists(atPath: cacheVideoDirectory.path) {
//            do {
//                try fileManager.createDirectory(at: cacheVideoDirectory, withIntermediateDirectories: true, attributes: nil)
//            } catch {
//                completion?(nil, error)
//                return nil
//            }
//        }
//        
//        var fileName = url.path.md5
//        
//        // 使用 URL 的 MD5 哈希值作为缓存文件名，附加 URL 的后缀名
//        var fileExtension = ""
//        
//        if let fileEx = fileEx {
//            fileExtension = fileEx
//        }else{
//            var missingExStr = ""
//            if let missingEx = missingEx {
//                missingExStr = missingEx
//            }
//            fileExtension = url.pathExtension.isEmpty ? missingExStr : url.pathExtension
//        }
//
//        if fileExtension.count > 0 {
//            fileName = url.path.md5 + ".\(fileExtension)"
//        }
//        
//        let cachedFileURL = cacheVideoDirectory.appendingPathComponent(fileName)
//        return cachedFileURL
//
//    }
//    
////    func a(){
////        var fileName = url.path.md5
////        
////        // 使用 URL 的 MD5 哈希值作为缓存文件名，附加 URL 的后缀名
////        var fileExtension = ""
////        
////        if let fileEx = fileEx {
////            fileExtension = "fileEx"
////        }else{
////            var missingExStr = ""
////            if let missingEx = missingEx {
////                missingExStr = missingEx
////            }
////            fileExtension = url.pathExtension.isEmpty ? missingExStr : url.pathExtension
////        }
////
////        if fileExtension.count > 0 {
////            fileName = url.path.md5 + ".\(fileExtension)"
////        }
////
////    }
//    
//    //获取 urlstring 本地的缓存 url path
//    public static func getCachedURLString(
//        from urlString: String,
//        fileEx:String? = nil,
//    missingEx:String? = nil,
//        cacheDirectory:String = "cacheAll")->URL?{
//        
//        if let cachedFileURL = checkURLString(
//            from: urlString,
//            fileEx: fileEx,
//            missingEx: missingEx,
//            cacheDirectory: cacheDirectory
//        ){
//            //检查文件是否已存在于缓存中
//            if FileManager.default.fileExists(atPath: cachedFileURL.path) {
//                print("文件已存在于缓存中: \(cachedFileURL)")
//                return cachedFileURL
//            }
//        }
//        
//        return nil
//    }
//}
